package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import modelo.pk.PreparacionPK;


public class PreparacionDAO {	
	public PreparacionDAO() {
		super();
	}
	public float getCantidadPorCondicion(String tira){
		float cant=0;
		String tiraSQL = tira;
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		try{
			while (resultSet.next()){
				cant = new Float(resultSet.getString("porcion"));
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
		return cant;
	}
	public int tamañoTabla(){
		int tamaño=0;
		String tiraSQL="select * from preparacion";
		ResultSet resultSet= Conexion.consultar(tiraSQL);
		while (!resultSet.equals(null)){
			tamaño++;
		}
		return tamaño;
	}
	public void Incluir(Preparacion pre){
		String tiraSQL = "insert into preparacion " +
				"(porcion, codingrediente, codproducto) values" +
				"('"+pre.getPorcion()+"','"+pre.getPk().getIngrediente().getCodI()+"','"+pre.getPk().getProducto().getCodP()+"')";
		Conexion.ejecutar(tiraSQL);
	}
	public void eliminarPorProducto(int cod){
		String tiraSQL= "delete from preparacion where (codproducto='"+cod+"')";
		Conexion.ejecutar(tiraSQL);
	}
	public Preparacion getPreparacionPorPK(PreparacionPK prePK){
		String tiraSQL = "select * from preparacion where (codingrediente='"+prePK.getIngrediente().getCodI()+"' and codproducto='"+prePK.getProducto().getCodP()+"')";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		Preparacion preparacion = null;
		try{
			while(resultSet.next()){
				preparacion = new Preparacion();
				int codi = resultSet.getInt("codingrediente");
				int codp = resultSet.getInt("codproducto");
				float porcion = resultSet.getFloat("porcion");
				preparacion.setPk(prePK);
				preparacion.setPorcion(porcion);
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
		return preparacion;
	}
	public List<Preparacion> consultarPreparacionPorProducto(Producto producto){
		List<Preparacion> listPreparacion = new ArrayList<Preparacion>();
		String tiraSQL ="select * from preparacion where(codproducto='"+producto.getCodP()+"')";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		try{
			while(resultSet.next()){
				IngredienteDAO ingredienteDAO = new IngredienteDAO();
				Ingrediente ingrediente = ingredienteDAO.buscarIngredientePorCodigo(resultSet.getInt("codingrediente"));
				float porcion = new Float(resultSet.getString("porcion"));
				PreparacionPK preparacionPK = new PreparacionPK(producto, ingrediente);
				Preparacion preparacion = new Preparacion(preparacionPK, porcion);
				listPreparacion.add(preparacion);
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
		return listPreparacion;
	}
	public List<Preparacion> consultarPreparacionPorIngrediente(Ingrediente ingrediente){
		List<Preparacion> listPreparacion = new ArrayList<Preparacion>();
		String tiraSQL ="select * from preparacion where(codingrediente='"+ingrediente.getCodI()+"')";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		try{
			while(resultSet.next()){
				ProductoDAO productoDAO = new ProductoDAO();
				Producto producto = productoDAO.getProductoPorCodigo(resultSet.getInt("codproducto"));
				float porcion = new Float(resultSet.getString("porcion"));
				PreparacionPK preparacionPK = new PreparacionPK(producto, ingrediente);
				Preparacion preparacion = new Preparacion(preparacionPK, porcion);
				listPreparacion.add(preparacion);
			}
		}catch(SQLException e){
			e.printStackTrace();
		}
		return listPreparacion;
	}
 }